package com.learning.spring.cloud.alibaba.hystrix.detail.web.fallback;


import com.learning.spring.cloud.alibaba.hystrix.detail.web.service.OrderHystrixFeignService;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * fallbackFactory 属性指定回退类。实现了解回退的原因（如异常），可以根据不同的异常，返回不同的信息。
 */
@Slf4j
@Component
class UserFeignServiceImplFallbackFactory implements FallbackFactory<OrderHystrixFeignService> {

    @Override
    public OrderHystrixFeignService create(Throwable throwable) {

        // 日志最好放在各个fallback方法中，而不要直接放在create方法中。
        // 否则在引用启动时，就会打印该日志。
        // 详见 https://github.com/spring-cloud/spring-cloud-netflix/issues/1471
        // 这边暂时简单处理

        log.error("回退：", throwable);
        return new OrderFeignServiceFallback();
    }
}